package controllers

import (
	"demo/models"
	"fmt"
	"log"
	"net/http"
	"os"
	"strconv"

	"github.com/gin-gonic/gin"
	"github.com/xuri/excelize/v2"
)

type KkKkK struct {
	Tmxh   int    `json:"tmxh"`
	Tmnd   string `json:"tmnd"`
	Tmlx   string `json:"tmlx"`
	Tmnr   string `json:"tmnr"`
	Tmdas  string `json:"tmdas"`
	Tmda1  string `json:"tmda1"`
	Tmda2  string `json:"tmda2"`
	Tmda3  string `json:"tmda3"`
	Tmda4  string `json:"tmda4"`
	Tmda5  string `json:"tmda5"`
	Tmda6  string `json:"tmda6"`
	Tmzqda string `json:"tmzqda"`
}

func UploadExcel(c *gin.Context) {
	file, err := c.FormFile("file")
	if err != nil {
		c.JSON(http.StatusBadRequest, gin.H{"error": "failed to upload file"})
		return
	}

	// 读取文件内容
	os.MkdirAll("./uploads", os.ModePerm)
	filePath := "./uploads/" + file.Filename
	c.SaveUploadedFile(file, filePath)
	defer os.Remove(filePath) // 清理上传文件

	// 解析Excel文件
	f, err := excelize.OpenFile(filePath)
	if err != nil {
		c.JSON(http.StatusBadRequest, gin.H{"error": "failed to open Excel file"})
		return
	}

	// 假设数据在第一个工作表中
	sheetName := f.GetSheetName(0)
	rows, err := f.GetRows(sheetName)
	if err != nil {
		c.JSON(http.StatusBadRequest, gin.H{"error": "failed to get rows from Excel file"})
		return
	}

	// 跳过标题行（如果有的话）
	if len(rows) > 0 {
		rows = rows[1:]
	}

	for _, row := range rows {
		tmxh, err := strconv.Atoi(row[0]) // 将字符串转换为int
		if err != nil {
			c.JSON(http.StatusBadRequest, gin.H{"error": "invalid tmxh value"})
			return
		}
		kkk := KkKkK{
			Tmxh:   tmxh,
			Tmnd:   row[1],
			Tmlx:   row[2],
			Tmnr:   row[3],
			Tmdas:  row[4],
			Tmda1:  row[5],
			Tmda2:  row[6],
			Tmda3:  row[7],
			Tmda4:  row[8],
			Tmda5:  row[9],
			Tmda6:  row[10],
			Tmzqda: row[11],
		}
		result := models.DB.Create(&kkk)
		if result.Error != nil {
			log.Println("failed to insert record:", result.Error)
		} else {
			fmt.Println("Record inserted successfully")
		}
	}
	c.JSON(http.StatusOK, gin.H{"message": "导入题库成功"})

}
